﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net;
using System.Data;
using System.Data.SqlClient;

namespace Team4Mock.DAO
{
    public class Helper
    {
        Provider p = new Provider();
        SqlCommand cmd;
        SqlDataAdapter da;
        DataTable dt;
        /// <summary>
        /// Hàm thực thi thủ tục không trả về giá trị có tham số truyền vào
        /// </summary>
        /// <param name="proc">Tên thủ tục</param>
        /// <param name="param">Các tham số</param>
        public void ExecuteNonQuerry(string proc, SqlParameter[] param)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(param);
            cmd.Connection = p.Connect();
            cmd.ExecuteNonQuery();
            p.CloseConnect();
        }
        /// <summary>
        /// Hàm thực thi thủ tục không trả về giá trị có tham số truyền vào
        /// </summary>
        /// <param name="proc">Tên thủ tục</param>
        public void ExecuteNonQuerry(string proc)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = p.Connect();
            cmd.ExecuteNonQuery();
            p.CloseConnect();
        }

        /// <summary>
        /// Hàm lấy về 1 bảng dữ liệu với tên thủ tục truyền vào
        /// </summary>
        /// <param name="proc">Tên thủ tục</param>
        /// <returns>Trả về 1 bảng</returns>
        public DataTable GetData(string proc)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = p.Connect();
            da = new SqlDataAdapter(cmd);
            dt = new DataTable();
            da.Fill(dt);
            p.CloseConnect();
            return dt;
        }
        /// <summary>
        /// Hàm trả về 1 bảng với tên thủ tục truyền vào và có các tham số
        /// </summary>
        /// <param name="proc">Tên thủ tục</param>
        /// <param name="param">Các tham số</param>
        /// <returns>Trả về 1 bảng</returns>
        public DataTable GetData(string proc, SqlParameter[] param)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(param);
            cmd.Connection = p.Connect();
            da = new SqlDataAdapter(cmd);
            dt = new DataTable();
            da.Fill(dt);
            p.CloseConnect();
            return dt;
        }


        /// <summary>
        /// Hàm trả về 1 giá trị kiểu Int với tên thủ tục truyền vào
        /// </summary>
        /// <param name="proc">Tên thủ tục</param>
        /// <returns>Trả về chỉ 1 giá trị kiểu Int</returns>
        public int GetValueInt(string proc)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = p.Connect();
            int i = int.Parse(cmd.ExecuteScalar().ToString());
            p.CloseConnect();
            return i;
            
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="proc"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public int GetValueInt(string proc, SqlParameter[] param)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(param);
            cmd.Connection = p.Connect();
            int i = int.Parse(cmd.ExecuteScalar().ToString());
            p.CloseConnect();
            return i;
            
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="proc"></param>
        /// <returns></returns>
        public string GetValueString(string proc)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = p.Connect();
            string i = cmd.ExecuteScalar().ToString();
            p.CloseConnect();
            return i;
            
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="proc"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public string GetValueString(string proc, SqlParameter[] param)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(param);
            cmd.Connection = p.Connect();
            string i = cmd.ExecuteScalar().ToString();
            p.CloseConnect();
            return i;
            
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="proc"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public float GetValueFloat(string proc, SqlParameter[] param)
        {
            cmd = new SqlCommand();
            cmd.CommandText = proc;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(param);
            cmd.Connection = p.Connect();
            float i = Convert.ToSingle(cmd.ExecuteScalar().ToString());
            p.CloseConnect();
            return i;
            
        }
        public string Encryption(string pass)
        {
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Trim(), "SHA1");
        }
        public bool SendMail_Thankyou()
        {
            try
            {

                string to = "tunglam236@gmail.com";
                int port = 587;
                string subject = "Subbjec";
                string content = "Bodydjdgjasdas";
                SmtpClient client = new SmtpClient();
                client.EnableSsl = true;
                client.Port = port;
                client.Host = "smtp.gmail.com";
                client.Credentials = new NetworkCredential("heineken236@gmail.com", "password");
                MailAddress from = new MailAddress("heineken236@gmail.com", "Subtitle");
                MailAddress toAddress = new MailAddress(to);
                MailMessage message = new MailMessage(from, toAddress);
                message.Body = content;
                message.Subject = subject;

                client.Send(message);

                return true;
            }
            catch (Exception)
            {
                return false;
            }

        }
    }
}